import re
from numpy import *
import pandas as ps
import json
# from homeData import getAllData
from .query import querys

from pymysql import *

conn = connect(host='localhost',user='root',password='123456',database='movie_result',port=3306)
cursor = conn.cursor()

def querys(sql,params,type='no_select'):
    params = tuple(params)
    cursor.execute(sql,params)
    if type != 'no_select':
        data_list = cursor.fetchall()  #从数据库中获取所以的movies
        conn.commit()
        return data_list
    else:
        conn.commit()
        return '数据库语句执行成功'

def getAllData(): #获取全部movie的数据 并返回一个列表
    def map_fn(item):
        item = list(item)
        if item[1] == None:
            item[1] = '无'
        else:
            item[1] = item[1].split(',')
        if item[4] == None:
            item[4] = '无'
        else:
            item[4] = item[4].split(',')
        item[7] = item[7].split(',')
        if item[8] == None:
            item[8] = '中国大陆'
        else:
            item[8] = item[8].split(',')
        if item[9] == None:
            item[9] = '汉语普通话'
        else:
            item[9] = item[9].split(',')
        item[13] = item[13].split(',')
        item[16] = item[16].split(',')
        item[15] = json.loads(item[15])
        return item
    allData = querys('select * from movies_copy',[],'select')
    #allData = query.querys('select * from movies_copy', [], 'select')
    allData = list(map(map_fn,list(allData)))
    return allData

item = getAllData()
df = ps.DataFrame(item, columns=[
    'id',
    'directors',
    'rate',
    'title',
    'casts',
    'cover',
    'year',
    'types',
    'country',
    'lang',
    'time',
    'moveiTime',
    'comment_len',
    'starts',
    'summary',
    'comments',
    'imgList',
    'movieUrl',
    'detailLink'
])

def getRating():#获取用户评分信息
    rating_data = querys('select * from ratings_sorted', [], 'select')
    filtered_tuples = tuple(tuple(t) for t in rating_data if t[0] == 0)#用户0的评分电影
    movie = {}#用户评分的电影
    for temp in filtered_tuples:
        # print(temp[1])
        movie_id = temp[1].replace("'", "")
        movie[movie_id] = temp[2]
    # print(movie)
    # 数据添加
    data = []
    # 遍历df中的每一行，检查'id'是否在movie字典中
    for index, row in df.iterrows():
        movie_id = row['id']  # 获取当前行的'id'
        if str(movie_id) in movie:
            # 如果'id'在movie字典中，创建一个新字典或列表来存储当前行的数据和评分
            # 这里我们使用列表，因为Pandas的to_dict()可能不适用于直接添加到列表中
            # 但如果你想要保持字典结构，可以稍作修改
            row_data = row.tolist()  # 将当前行转换为列表（不包括索引）
            row_data.append(movie[str(movie_id)])  # 在列表末尾添加评分
            data.append(row_data)  # 将包含评分的行添加到data列表中
    return data
